﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;

namespace eGrocery.ProductDAL
{
    public class ProductDA
    {
        //public override ProductEntity.Product SaveObject(string userName, ProductEntity.Product tObject)
        //{
        //    try
        //    {
        //        GetNewDBHelper();
        //        dbHelper.AddParameter("@Product_ID", tObject.ProductID);
        //        dbHelper.AddParameter("@Product_Name", tObject.ProductName);
        //        dbHelper.AddParameter("@Product_Desc", tObject.ProductDesc);
        //        dbHelper.AddParameter("@Product_Price", tObject.ProductPrice);
        //        dbHelper.AddParameter("@Product_Category", tObject.ProductCategory);
        //        dbHelper.AddParameter("@Product_SubCategory", tObject.ProductSubCategory);
        //        dbHelper.AddParameter("@Product_Owner", tObject.ProductOwner);
        //        dbHelper.AddParameter("@CreationDate", tObject.CreateDate );
        //        dbHelper.AddParameter("@CreatedBy", tObject.CreatedBy);
        //        dbHelper.AddParameter("@ModificationDate", tObject.ModificationDate);
        //        dbHelper.AddParameter("@ModifiedBy", tObject.ModifiedBy);
        //        dbHelper.AddParameter("@ProductMeasure", tObject.UnitOfMeasure);
        //        dbHelper.AddParameter("@IsALive", tObject.IsAlive);
        //        //dbHelper.ExecuteNonQuery("USP_INS_UPDATE_PRODUCT", System.Data.CommandType.StoredProcedure, System.Data.ConnectionState.Closed);
        //        object objID = dbHelper.ExecuteScaler("USP_INS_UPDATE_PRODUCT", System.Data.CommandType.StoredProcedure, System.Data.ConnectionState.Closed);
        //        if (Convert.ToInt32(objID) > 0)

        //            tObject.ProductID = Convert.ToInt32(objID);

        //        LogActivity(userName,string.Format("Product Saved with ID {0}", tObject.ProductID), tObject);

        //        //return tObject;

        //    }
        //    catch (Exception ex)
        //    {
        //        LogException(userName, ex, tObject);
        //        tObject = null;
        //        throw new Exception("Error Occured while Saving Product");                
        //    }           
        //    return tObject;
        //    //throw new NotImplementedException();
        //}
        //public override bool DeleteObject(string userName, ProductEntity.Product tObject)
        //{
        //    try
        //    {
        //        GetNewDBHelper();
        //        dbHelper.AddParameter("@Product_ID", tObject.ProductID);
        //        dbHelper.ExecuteNonQuery("USP_DELETE_PRODUCT", System.Data.CommandType.StoredProcedure, System.Data.ConnectionState.Closed);
        //        return tObject.IsAlive;
        //    }
        //    catch (Exception)
        //    {
        //        return tObject.IsAlive;
        //        ////throw;
        //    }
            
        //   // throw new NotImplementedException();
        //}
        //public override List<ProductEntity.Product> GetObjectList(string userName, DateTime fromDate, DateTime toDate)
        //{
        //    throw new NotImplementedException();
        //}
        //public override List<ProductEntity.Product> SearchObject(string userName, string SearchText)
        //{
        //    #region PROCEDURE
        //    /**
        //     ALTER PROCEDURE [dbo].[USP_SEARCH_PRODUCT]  
        //    (@SearchText VARCHAR(256))  
        //    AS  

        //    SELECT P.[Product_ID]  
        //     ,P.[Product_Name]  
        //    ,P.[Product_Desc]  
        //    ,P.[Product_Category]  
        //    ,P.Product_SubCategory
        //    ,PC.[Category_Name]
        //    ,PSC.[SubCategory_Name]
        //    ,[Product_Owner]
        //    ,Product.[IsLive]  
        //     FROM [Product] P  JOIN [Category] PC ON 
        //     P.Product_Category=PC.Category_ID
        //    JOIN Product_SubCategory PSC ON P.Pruduct_SubCategory=PSC.SubCategoryID
        //    where Product.IsLive=1 and ([Product_ID] LIKE '%'+ @SearchText+'%'  
        //     or [Product_Name] LIKE '%'+ @SearchText+'%')  
        //    order by [Product_Name],[Product_ID]  
             
        //     **/

        //    #endregion

        //    try
        //    {
        //        dbHelper.AddParameter("@SearchText", string.IsNullOrWhiteSpace(SearchText) ? string.Empty : SearchText);
        //        var reader = dbHelper.ExecuteReader("USP_SEARCH_PRODUCT", System.Data.CommandType.StoredProcedure, System.Data.ConnectionState.Closed);
        //        var list = new List<Product>();
        //        while (reader.Read())
        //        {
        //            list.Add(GetProductObject(reader, true));
        //        }
        //        LogActivity(userName, string.Format("Searched customer with text {0}", SearchText), null);
        //        return list;
        //    }
        //    catch (Exception ex)
        //    {
        //        LogException(userName, ex, null);
        //        throw new Exception("Error while searching Customer");
        //    }
        //   // throw new NotImplementedException();
        //}
        //public static Product GetProductObject(IDataReader reader, bool IsFull)
        //{
        //    int i = -1;
        //    Product obj = new Product();
        //    if (!reader.IsDBNull(++i))
        //        obj.ProductID = reader.GetInt32(i);
        //    if (!reader.IsDBNull(++i))
        //        obj.ProductName = reader.GetString(i);
        //    if (!reader.IsDBNull(++i))
        //        obj.ProductDesc = reader.GetString(i);
        //    if (IsFull)
        //    {
        //        i += 1;
        //        if (!reader.IsDBNull(i) && !reader.IsDBNull(i + 1))
        //            obj.ProductCategory = new Category { CategoryID = reader.GetInt32(i), CategoryName = reader.GetString(++i) };
        //        if (!reader.IsDBNull(i) && !reader.IsDBNull(i + 1))
        //            obj.ProductSubCategory = new SubCategory { SubCategoryID = reader.GetInt32(i), SubCategoryName = reader.GetString(++i) };
        //        if (!reader.IsDBNull(++i))
        //            obj.ProductOwner = reader.GetString(i);
        //        if (!reader.IsDBNull(++i))
        //            obj.IsLive = reader.GetBoolean(i);
        //    }
        //    return obj;
        //}
    }
}
